[Постановка задачи](docs/task.md)  
![search-engine](images/search-engine.png "search-engine")
# Разработка локального поискового движка по сайту
## Описание проекта
Разработано приложение, которое позволяет индексировать страницы и осуществлять по ним быстрый поиск.  
Движок разработан на фреймворке Spring. В проекте применены знания по ООП, коллекциям, работе с файлами и сетью,  
работе с базами данных и многопоточности. Мало веб-разработки и много алгоритмического кода.

### Принципы работы поискового движка

1. В [конфигурационном файле](application.yaml) перед запуском приложения задаются адреса сайтов, по которым движок должен осуществлять поиск.
2. Поисковый движок должен самостоятельно обходить все страницы заданных сайтов и индексировать их  
   (создавать так называемый индекс) так, чтобы потом находить наиболее релевантные страницы по любому поисковому запросу.
3. Пользователь присылает запрос через API движка. Запрос — это набор слов, по которым нужно найти страницы сайта.
4. Запрос определённым образом трансформируется в список слов, переведённых в базовую форму.  
   Например, для существительных — именительный падеж, единственное число.
5. В индексе ищутся страницы, на которых встречаются все эти слова.
6. Результаты поиска ранжируются, сортируются и отдаются пользователю.

### [Трёхуровневая архитектура](docs/3layers.md)     
### [MVC](docs/mvc.md)


### [Стэк используемых технологий](docs/stack.md)


### [Инструкция по локальному запуску проекта — последовательность команд и действий](docs/instruction.md)

* Структура [базы данных](docs/app_db.md)  
* Диаграмма UML (текст) [app_db.puml](docs/app_db.puml)






